import scrapy
from caipiao.items import CaipiaoItem  # 先导包 但是这会报错这是因为彩票项目我这里不是在顶级目录，需要将该项目标记为根，在工作中不建议这么做


# 目标url数据：https://datachart.500.com/ssq/


class ShuangseqiuSpider(scrapy.Spider):
    name = "shuangseqiu"
    allowed_domains = ["500.com"]
    start_urls = ["https://datachart.500.com/ssq/"]  # 起始url

    def parse(self, response, **kwargs):  # parse标黄是继承父类希望我们跟父类的方法保持一致,这里是我们重写的方法
        # print(response.text)  # 设置好日志过滤无用信息  LOG_LEVEL = "WARNING"

        # 数据解析
        trs = response.xpath('//*[@id="tdata"]/tr')
        for tr in trs:
            # red_balls = tr.xpath('./td[@class="chartBall01"]/text()').extract()
            # scrapy 支持xpath()与css()混用
            if tr.xpath('./@class').extract_first() == 'tdbck':  # 排除横线
                continue
            # 抓红球与篮球、时期号
            red_ball = tr.css(".chartBall01::text").extract()  # css里面的chartBall01的text文本
            blue_ball = tr.xpath('./td[@class="chartBall02"]/text()').extract()
            date_num = tr.xpath('./td[1]/text()').extract_first().strip()

            # 准备字典保存数据
            # dic = {
            #     "date_num": date_num,
            #     "red_ball": red_ball,
            #     "blue_ball": blue_ball
            # }

            # 但是scrapy搞大型的爬虫的不仅仅是简单的字符串数，使用字典来传递数据显然是不够的
            # scrapy希望你在items.py自定义一个class的数据结构用来传递数据，这样就不用考虑传递数据时的类型错误

            cai = CaipiaoItem()  # 相当于定义一个字典cai = dic()，其实是一个我们的自定义的数据结构
            cai['date_num'] = date_num
            cai['red_ball'] = red_ball
            cai['blue_ball'] = blue_ball
            yield cai
